/**
 *
 * Usuario : administrator
 * Creaci&oacute;n: 24/11/2005 - 11:30:00 AM
 * Cambios :
 *  Fecha | Autor  |  Cambios
 *  24/11/2005 | <a href = "mailto:AngelElectrico@PsiqueWare.com">Angel El&eacute;ctrico</a> | Creaci&oacute;n del Objeto.
 */

package com.psiqueware.alheli.seguridad;

import com.psiqueware.alheli.basico.BaseObjectInterface;
import com.psiqueware.alheli.seguridad.modelo.RolK;

import java.util.List;

/**
 * Identificaci&oacute;n de seguridad para un {@link UsuarioSeguridad}.
 * Esta solo es una representaci&oacute;n para facilitar el encapsulamiento, no extender.
 * <br/>Paquete Original: com.psiqueware.basico.seguridad
 * <br/>Nombre  Original: Credencial
 * <br/><a href="Credencial.java.html"><i>Ver C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@psiqueware.com">Angel El&eacute;ctrico</a>
 * @version Revision: 1.1 24/11/2005 11:30:00 AM
 */
public interface Credencial extends BaseObjectInterface
{
    /**
     * {@link Permiso} para editar los {@link UsuarioSeguridad}.
     */
    public static Permiso PERMISO = new Permiso("Permiso.Credencial",true);

    /**
     * Devuelve una copia de la lista de los {@link Rol} que tiene este {@link Credencial}.
     *
     * @return lista de {@link Rol}.
     */
    public List<Rol> listRoles();

    /**
     * Dice si se pose&eacute; un {@link Permiso}.
     */
    boolean tienePermiso(Permiso permiso);

    /**
     * Nos dice si el {@link Rol} se encuentra contenido en la
     * lista.
     *
     * @param o {@link Rol} a buscar.
     *
     * @return <code>true</code> si lo encuentra; <code>false</code> en caso contrario.
     */
    boolean containsRol(final Rol o);

    /**
     * Establece la agrupacion al que pertenece esta credencial.
     *
     * @return agrupacion
     */
    public Agrupacion getAgrupacion();


}
